package demo.generis;

import java.util.ArrayList;
import java.util.Collection;

/**
 * @Auther: hjy(lc))
 * @Date: 2022/8/3-08-03-10:57
 * @Description：demo.generis   泛型    类型参数化  必须先声明，必须是引用类型
 */
/*
泛型方法
    public <T> T test (T t){}    参数类型和返回类型都为同一个类型
    不构成重载
    ？ 泛型通配符   只能查看数据、不能修改数据
 */
public class generis_use<T>{
    T x;
    T y;
    public static void main(String[] args) {
        //如果创建对象时未给类泛型传引用类型，则默认是Object类型
        //e.g.  generis_use value = new generis_use();
        generis_use<Integer> value = new generis_use<>();
        value.x = 1;
        System.out.println(value.x);

        Integer i = show(3);
        System.out.println(i);

        Collection<?> list = new ArrayList<Integer>();
        //list.add(1);
        list.add(null);     //只能add  null值
        test(new ArrayList<String>());

    }

    //泛型方法
    public static  <E> E show (E e){
        return e;
    }

    //只能遍历数据，不能操作数据，例如add
    public static void test(Collection<?> list){}
}
